package com.binhthuan.catechist.client.dto;

import name.pehl.piriti.client.json.Json;
import name.pehl.piriti.client.json.JsonReader;
import name.pehl.piriti.client.json.JsonWriter;

import com.google.gwt.core.client.GWT;

/**
 * @author Giang Đinh - Điểm danh học viên, tương ứng với bảng <b>diem_danh</b>
 *         trong cơ sở dữ liệu.
 */
public class Attendance {
    
    public interface AttendanceReader extends JsonReader<Attendance> {
    }
    public interface AttendanceWriter extends JsonWriter<Attendance> {
    }

    public static AttendanceReader READER = GWT.create(AttendanceReader.class);
    public static AttendanceWriter WRITER = GWT.create(AttendanceWriter.class);
    /**
     * Mã điểm danh.
     */
    @Json
    private Integer id;
    
    /**
     * Học viên.
     */
    @Json
    private Trainee trainee;
    
    /**
     * Tình trạng điểm danh.
     */
    @Json
    private TraineeStatus status;
    
    /**
     * Sổ điểm danh.
     */
    @Json
    private AttendanceReport attendanceReport;
    
    /**
     * Ghi chú.
     */
    @Json
    private String comment;

    public Attendance() {
        
    }
    
    /**
     * Lấy mã điểm danh.
     * @return Mã điểm danh.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã điểm danh.
     * @param id
     *            Mã điểm danh.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy học viên.
     * @return Học viên.
     */
    public Trainee getTrainee() {
        return trainee;
    }

    /**
     * Gán học viên.
     * @param trainee
     *            Học viên.
     */
    public void setTrainee(Trainee trainee) {
        this.trainee = trainee;
    }

    /**
     * Lấy trạng thái điểm danh.
     * @return Trạng thái điểm danh.
     */
    public TraineeStatus getStatus() {
        return status;
    }

    /**
     * Gán trạng thái điểm danh.
     * @param status
     *            Trạng thái điểm danh.
     */
    public void setStatus(TraineeStatus status) {
        this.status = status;
    }

    /**
     * Lấy sổ điểm danh.
     * @return Sổ điểm danh.
     */
    public AttendanceReport getAttendanceReport() {
        return attendanceReport;
    }

    /**
     * Gán sổ điểm danh.
     * @param attendanceReport
     *            Sổ điểm danh.
     */
    public void setAttendanceReport(AttendanceReport attendanceReport) {
        this.attendanceReport = attendanceReport;
    }

    /**
     * Lấy ghi chú.
     * @return Ghi chú.
     */
    public String getComment() {
        return comment;
    }

    /**
     * Gán ghi chú.
     * @param comment
     *            Ghi chú.
     */
    public void setComment(String comment) {
        this.comment = comment;
    }
}
